package com.sanben.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sanben.common.web.entity.UserVO;
import com.sanben.user.data.dto.UserDto;
import com.sanben.user.data.dto.UserEditPasswordDto;
import com.sanben.user.data.dto.UserLoginDto;
import com.sanben.user.entity.User;

import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;

/**
 * @author cyh
 * @description: 用户表 服务类
 * @date: 2020-08-11
 */
public interface IUserService extends IService<User> {

    /**
     * 登录
     *
     * @param dto
     * @return
     */
    UserVO login(UserLoginDto dto);

    /**
     * 获取图形验证码
     *
     * @param httpServletResponse
     * @param randomStr
     */
    void captcha(HttpServletResponse httpServletResponse, String randomStr);

    /**
     * 手机号登录
     *
     * @param mobile
     * @param code
     * @param regionId
     * @return
     */
    UserVO mobileLogin(String mobile, String code, Integer regionId);

    /**
     * 获取手机号验证码
     *
     * @param mobile 手机号
     * @return
     */
    Boolean getMobileCode(String mobile);

    /**
     * 注册
     *
     * @param mobile
     * @param code
     * @param password
     */
    void register(@NotBlank String mobile, String code, String password);

    /**
     * 修改密码
     *
     * @param dto
     * @return
     */
    void editPassword(UserEditPasswordDto dto);

    /**
     * 修改
     *
     * @param dto
     * @return
     */
    Boolean updateById(UserDto dto);

    /**
     * 详情
     *
     * @param id
     * @return
     */
    User detail(Integer id);

    /**
     * 退出登录
     *
     * @param userId
     */
    void loginOut(Integer userId);
}
